#
# This file is a part of the open-eBackup project.
# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
# If a copy of the MPL was not distributed with this file, You can obtain one at
# http://mozilla.org/MPL/2.0/.
#
# Copyright (c) [2024] Huawei Technologies Co.,Ltd.
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#

from pydantic import BaseModel, Field

from common.schemas.thrift_base_data_type import Copy, CopyDataTypeEnum
from common.schemas.thrift_plugin import Application


class DATACopyExtend(BaseModel):
    backup_time: int = Field(alias="backupTime")
    # 自定义字段
    backup_scn: int = Field(alias="backupScn")


class LogCopyExtend(BaseModel):
    backup_time: int = Field(alias="backupTime")
    begin_time: int = Field(alias="beginTime")
    end_time: int = Field(alias="endTime")
    associated_copies: list[Copy] = Field(alias="associatedCopies")
    log_dir_name: str = Field(alias="logDirName")
    # 自定义字段
    begin_scn: int = Field(alias="beginScn")
    end_scn: int = Field(alias="endScn")


class QueryPreviousCopyParam(BaseModel):
    application: Application
    types: list[CopyDataTypeEnum]
    copy_id: str = Field(alias="copyId")


class BackintParam(BaseModel):
    pid: str
    data_path: str
    parallel: int = Field(default=1, description="拷贝线程数")
